package com.tang.basics.introductory;

public class Homework {
    public static void main(String[] args) {
        Homework01.main();
    }
}


class Homework01 {

    //编写一个main方法
    public static void main() {
		/*
		某人有100,000元,每经过一次路口，需要交费,规则如下:
		1) 当现金>50000时,每次交5%
		2) 当现金<=50000时,每次交1000
		编程计算该人可以经过多少次路口, 要求: 使用 while + break方式完成

		思路分析
		1. 定义 double money 保存 100000
		2. 根据题的要求，我们分析出来有三种情况
			money > 50000
			money >=1000 && money <= 50000
			money < 1000
		3. 使用多分支 if-elseif-else
		4. while+break[money < 1000], 同时使用一个变量count来保存通过路口
		代码实现
		 */
        double money = 100000;//还有多少钱
        int count = 0; //累积过的路口
        while (true) { //无限循环
            if (money > 50000) { //过路口
                //money = money -  money * 0.05;
                money *= 0.95; //过了这个路口后，还有这么多钱
                count++;
            } else if (money >= 1000) {
                money -= 1000;
                count++;
            } else { //钱不够1000
                break;
            }
        }
        System.out.println("100000 可以过 " + count + " 路口..");
    }
}



class Homework04 {

    //编写一个main方法
    public static void main() {

		/*
		4. 判断一个整数是否是水仙花数，所谓水仙花数是指一个3位数，
		其各个位上数字立方和等于其本身。
		例如： 153 = 1*1*1 + 3*3*3 + 5*5*5

		思路分析 => 多听. 见多识广..
		1. 比如 int n = 153;
		2. 先得到 n的百位，十位 ，各位的数字, 使用 if 判断他们的立方和是否相等
		3. n的百位 = n / 100
		4. n的十位 = n % 100 / 10
		5. n的各位 = n % 10
		6. 判断即可
		 */
        int n = 154;
        int n1 = n / 100;
        int n2 = n % 100 / 10;
        int n3 = n % 10;
        if(n1 * n1 * n1 + n2 * n2 * n2 + n3 * n3 * n3 == n) {
            System.out.println(n + "是水仙花数");
        } else {
            System.out.println(n + "不是水仙花数");
        }
    }
}